A typical enterprise computing environment includes multiple heterogeneous and distributed databases supporting a variety of different systems. For example, many enterprises such as businesses and the like have different systems to support customer billing, sales, accounting, inventory, ordering, procurement, etc. Further, many enterprises are the result of a merger of two or more predecessors, each with their own set of heterogeneous, and distributed databases. Notwithstanding the diversity of an enterprise's databases, there are typically many data common to some or all of these databases. However, the same data in different databases is often stored in different formats, e.g., having different databases, stored according to different technologies, organized according to different data models, used for different business purposes and according to different business rules, etc.
To take just one example of data that may be common to many organizations across an enterprise, many enterprises, e.g., companies, assign a unique identifier to each of the company's customers. Further, many companies assign a unique identifier to each customer account. Generally, the relationship of customer to accounts is a one-to-many relationship. Very few, if any, enterprises assign standard customer identifiers and account identifiers that are used in all systems across the enterprise, particularly when an enterprise results from the merger or combination of other organizations. Moreover, in the many enterprises that do not assign standard customer and account identifiers, it is difficult, and often impossible, in present enterprise environments, to ensure that data representing the same customers and accounts is created, maintained, and updated consistently across all systems within the enterprise. Further, even enterprises that do maintain standard customer and account identifiers across all enterprise systems face difficulties when, as is common in today's business world, such enterprises are acquired by or merged with other enterprises having their own different systems and methods for maintaining customer and account information.
Attempts have been made to reconcile the different versions of the same data in the diverse systems within an enterprise. For example, there is a field of research dedicated to what is known as “schema integration.” In an approach generally known as creating a “Mediated Schema”, a special database, or table within a database, may include associations between customer identifiers maintained in different systems within an enterprise. However, even where links between like data in diverse systems are maintained, it is generally difficult for different systems within an enterprise to enforce data integrity across all, or even some, of the different systems in the enterprise. For example, schema mapping by itself will not prevent a loss of data integrity when a billing system updates data associated with a customer identifier, but this update is not propagated to a sales and marketing system. Similarly, if data is incorrectly translated from one system to another, data integrity will be lost.
Despite the foregoing difficulties in reconciling and maintaining data in diverse systems, there are many reasons why multiple heterogeneous and independent data systems may exist within an enterprise. Where systems were created using different technologies or different data models, there may be considerable disruption to the enterprise, not to mention considerable time and expense, in migrating the multiple systems to the same technology platform. Accordingly, in many cases it is simply impossible, or at least impractical, for an enterprise to integrate its multiple heterogeneous and independent data systems. Further, the risk of committing the entire enterprise to a single technology platform is unacceptable to many enterprises, given the possibilities that, for a given technology platform, software vendors may go out of business, properly experienced staff may be unavailable, the technology may not prove to be robust or adequate to the needs of the enterprise, etc. Moreover, from the standpoint of resisting and recovering from disasters, it is advantageous for an enterprise to have multiple systems that are widely dispersed geographically and in terms of technology platforms, business units, etc.
Accordingly, there is a need for systems and methods that not only map data across diverse systems, but that also enforce and maintain the integrity of data across multiple heterogeneous and independent data systems.